package com.nn.smart.bus.commons.mybatis.utils;

import com.nn.smart.bus.commons.mybatis.entity.DeptScope;
import lombok.Data;

/**
 * 部门信息实体工具类
 *
 * @author nanning
 */
public class DeptEntityUtils {

    @Data
    public static class DeptDto {
        /**
         * 父所有部门ID
         */
        private String parentDeptIds;
        /**
         * 父所有部门
         */
        private String parentDeptNames;
        /**
         * 所有部门ID
         */
        private String allDeptIds;
        /**
         * 所有部门
         */
        private String allDeptNames;
    }

    /**
     * 装载部门信息
     *
     * @param dto
     * @param entityClass
     * @return T
     * @author nanning
     * @since 2019-12-18
     */
    public static <T extends DeptScope> T loadDeptInfo(DeptDto dto, Class<T> entityClass) {
        try {
            T t = entityClass.newInstance();
            t.setAllDeptIds(dto.getAllDeptIds());
            t.setAllDeptNames(dto.getAllDeptNames());
            t.setParentDeptIds(dto.getParentDeptIds());
            t.setParentDeptNames(dto.getParentDeptNames());
            return t;
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 装载部门信息
     *
     * @param dto
     * @param entity
     * @return void
     * @author nanning
     * @since 2019-12-18
     */
    public static <T extends DeptScope> void loadDeptInfo(DeptDto dto, T entity) {
        entity.setAllDeptIds(dto.getAllDeptIds());
        entity.setAllDeptNames(dto.getAllDeptNames());
        entity.setParentDeptIds(dto.getParentDeptIds());
        entity.setParentDeptNames(dto.getParentDeptNames());
    }
}
